home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / WIN_PRO / DS-1.ZIP;1 / H.ZIP / CONFIG.H next >
Encoding:
C/C++ Source or Header  |  1992-02-15  |  15.2 KB  |  774 lines

  1. /*
  2.  * Icon configuration.
  3.  */
  4.  
  5. /*
  6.  * System-specific definitions are in define.h
  7.  */
  8.  
  9. /*
  10.  *  A number of symbols are defined here.  Some are specific to individual
  11.  *  to operating systems.  Examples are:
  12.  *
  13.  *    MSDOS        MS-DOS for PCs
  14.  *    UNIX        any UNIX system
  15.  *    VMS        VMS for the VAX
  16.  *
  17.  *  These are defined to be 1 or 0 depending on which operating system
  18.  *  the installation is being done under.  They are all defined and only
  19.  *  one is defined to be 1.  (They are used in the form #if VAX || MSDOS.)
  20.  *
  21.  *  There also are definitions of symbols for specific computers and
  22.  *  versions of operating systems.  These include:
  23.  *
  24.  *    SUN        code specific to the Sun Workstation
  25.  *    MICROSOFT    code specific to the Microsoft C compiler for MS-DOS
  26.  *
  27.  *  Other definitions may occur for different configurations. These include:
  28.  *
  29.  *    DeBug        debugging code
  30.  *    MemMon        memory monitoring output
  31.  *
  32.  *  Other definitions perform configurations that are common to several
  33.  *  systems. An example is:
  34.  *
  35.  *    Double        align reals at double-word boundaries
  36.  *
  37.  */
  38.  
  39. /*
  40.  * If COMPILER is not defined, code for the interpreter is compiled.
  41.  */
  42.  
  43. #ifndef COMPILER
  44. #define COMPILER 0
  45. #endif
  46.  
  47. /*
  48.  * The following definitions insure that all the symbols for operating
  49.  * systems that are not relevant are defined to be 0 -- so that they
  50.  * can be used in logical expressions in #if directives.
  51.  */
  52.  
  53. #ifndef PORT
  54. #define PORT 0
  55. #endif                    /* PORT */
  56.  
  57. #ifndef AMIGA
  58. #define AMIGA 0
  59. #endif                    /* AMIGA */
  60.  
  61. #ifndef ARM
  62. #define ARM 0
  63. #endif                    /* ARM */
  64.  
  65. #ifndef ATARI_ST
  66. #define ATARI_ST 0
  67. #endif                    /* ATARI_ST */
  68.  
  69. #ifndef MACINTOSH
  70. #define MACINTOSH 0
  71. #endif                    /* MACINTOSH */
  72.  
  73. #ifndef MSDOS
  74. #define MSDOS 0
  75. #endif                    /* MSDOS */
  76.  
  77. #ifndef MVS
  78. #define MVS 0
  79. #endif                    /* MVS */
  80.  
  81. #ifndef OS2
  82. #define OS2 0
  83. #endif                    /* OS2 */
  84.  
  85. #ifndef UNIX
  86. #define UNIX 0
  87. #endif                    /* UNIX */
  88.  
  89. #ifndef VM
  90. #define VM 0
  91. #endif                    /* VM */
  92.  
  93. #ifndef VMS
  94. #define VMS 0
  95. #endif                    /* VMS */
  96.  
  97.  
  98. /*
  99.  * The following definitions serve to cast common conditionals is
  100.  *  a positive way, while allowing defaults for the cases that
  101.  *  occur most frequently.  That is, if co-expressions are not supported,
  102.  *  NoCoexpr is defined in define.h, but if they are supported, no
  103.  *  definition is needed in define.h; nonetheless subsequent conditionals
  104.  *  can be cast as #ifdef Coexpr.
  105.  */
  106.  
  107. #ifndef NoCoexpr
  108. #undef Coexpr
  109. #define Coexpr
  110. #endif                    /* NoCoexpr */
  111.  
  112. #ifndef NoEnvVars
  113. #undef EnvVars
  114. #define EnvVars
  115. #endif                    /* NoEnvVars */
  116.  
  117. #ifndef NoTraceBack
  118. #undef TraceBack
  119. #define TraceBack
  120. #endif                    /* NoTraceBack */
  121.  
  122. #ifndef NoStrInvoke
  123. #undef StrInvoke
  124. #define StrInvoke
  125. #endif                    /* NoStrInvoke */
  126.  
  127. #ifndef NoMathFncs
  128. #undef MathFncs
  129. #define MathFncs
  130. #endif                    /* NoMathFncs */
  131.  
  132. #ifndef NoLargeInts
  133. #undef LargeInts
  134. #define LargeInts
  135. #endif                    /* NoLargeInts */
  136.  
  137. #ifndef NoMemMon
  138. #ifdef EnvVars
  139. #undef MemMon
  140. #define MemMon
  141. #endif                    /* EnvVars */
  142. #endif                    /* NoMemMon */
  143.  
  144. #ifdef EventMon
  145. #undef EventProc
  146. #undef MemMon
  147. #define MemMon
  148. #define EventProc
  149. #endif                    /* EventMon */
  150.  
  151. #ifdef FixedRegions
  152. #ifndef NoMultiRegion
  153. #undef MultiRegion
  154. #define MultiRegion
  155. #endif                    /* NoMultiRegion */
  156. #endif                    /* FixedRegions */
  157.  
  158. /*
  159.  *  Did you understand all that?  Well, get a load of this...
  160.  */
  161.  
  162. #ifndef NoEventProc
  163. #undef EventProc
  164. #define EventProc
  165. #endif                    /* EventProc */
  166.  
  167.  
  168. #ifdef MultiRegion
  169. #ifdef NoFixedRegions
  170. deliberate syntax error
  171. #else                    /* NoFixedRegions */
  172. #undef FixedRegions
  173. #define FixedRegions
  174. #endif                    /* NoFixedRegions */
  175. #endif                    /* MultiRegion */
  176.  
  177. #ifndef RefPath
  178. #define RefPath BinPath
  179. #endif                    /* RefPath */
  180.  
  181. /*
  182.  * Names for standard environment variables, if they are supported.
  183.  * The standard names are used unless they are overridden.
  184.  */
  185.  
  186. #ifdef EnvVars
  187.  
  188. #ifndef MEMMON
  189. #define MEMMON "MEMMON"
  190. #endif
  191.  
  192. #ifndef NOERRBUF
  193. #define NOERRBUF "NOERRBUF"
  194. #endif
  195.  
  196. #ifndef TRACE
  197. #define TRACE "TRACE"
  198. #endif
  199.  
  200. #ifndef COEXPSIZE
  201. #define COEXPSIZE "COEXPSIZE"
  202. #endif
  203.  
  204. #ifndef STRSIZE
  205. #define STRSIZE "STRSIZE"
  206. #endif
  207.  
  208. #ifndef HEAPSIZE
  209. #define HEAPSIZE "HEAPSIZE"
  210. #endif
  211.  
  212. #ifndef BLOCKSIZE
  213. #define BLOCKSIZE "BLOCKSIZE"
  214. #endif
  215.  
  216. #ifndef BLKSIZE
  217. #define BLKSIZE "BLKSIZE"
  218. #endif
  219.  
  220. #ifndef STATSIZE
  221. #define STATSIZE "STATSIZE"
  222. #endif
  223.  
  224. #ifndef STATINCR
  225. #define STATINCR "STATINCR"
  226. #endif
  227.  
  228. #ifndef MSTKSIZE
  229. #define MSTKSIZE "MSTKSIZE"
  230. #endif
  231.  
  232. #ifndef QLSIZE
  233. #define QLSIZE "QLSIZE"
  234. #endif
  235.  
  236. #ifndef ICONCORE
  237. #define ICONCORE "ICONCORE"
  238. #endif
  239.  
  240. #ifndef IPATH
  241. #define IPATH "IPATH"
  242. #endif
  243.  
  244. #endif                    /* EnvVars */
  245.  
  246.  
  247. #ifndef NoExternalFunctions
  248. #undef ExternalFunctions
  249. #define ExternalFunctions
  250. #endif                    /* NoExternalFunctions */
  251.  
  252. /*
  253.  * EBCDIC == 0 corresponds to ASCII.  EBCDIC == 1 corresponds to EBCDIC
  254.  *  collating sequence, while EBCDIC == 2 provides the ASCII collating
  255.  *  sequence for EBCDIC systems.
  256.  */
  257. #ifndef EBCDIC
  258. #define EBCDIC 0
  259. #endif                    /* EBCDIC */
  260.  
  261. /*
  262.  * Other defaults.
  263.  */
  264.  
  265. #ifdef DeBug
  266. #undef DeBugTrans
  267. #undef DeBugLinker
  268. #undef DeBugIconx
  269. #define DeBugTrans
  270. #define DeBugLinker
  271. #define DeBugIconx
  272. #endif                    /* DeBug */
  273.  
  274. #ifdef ExecImages
  275. #undef IconCalling
  276. #endif                    /* ExecImages */
  277.  
  278. #ifndef AllocType
  279. #define AllocType unsigned int
  280. #endif                    /* AllocType */
  281.  
  282. #ifndef ErrorExit
  283. #define ErrorExit 1
  284. #endif                    /* ErrorExit */
  285.  
  286. #ifndef NormalExit
  287. #define NormalExit 0
  288. #endif                    /* NormalExit */
  289.  
  290. #ifndef Hz
  291. #define Hz 60
  292. #endif                    /* Hz */
  293.  
  294. #ifndef MaxHdr
  295. #define MaxHdr 4096
  296. #endif                    /* MaxHdr */
  297.  
  298. #ifndef MaxPath
  299. #define MaxPath 200
  300. #endif                    /* MaxPath */
  301.  
  302. #ifndef StackAlign
  303. #define StackAlign 2
  304. #endif                    /* StackAlign */
  305.  
  306. #ifndef SysTime
  307. #define SysTime <time.h>
  308. #endif                    /* SysTime */
  309.  
  310. #ifndef WordBits
  311. #define WordBits 32
  312. #endif                    /* WordBits */
  313.  
  314. #ifndef IntBits
  315. #define IntBits WordBits
  316. #endif                    /* IntBits */
  317.  
  318. #ifndef SourceSuffix
  319. #define SourceSuffix ".icn"
  320. #endif                    /* SourceSuffix */
  321.  
  322. /*
  323.  * Representations of directories. LocalDir is the "current working directory".
  324.  *  SourceDir is where the source file is. 
  325.  */
  326.  
  327. #define LocalDir ""
  328. #define SourceDir (char *)NULL
  329.  
  330. #ifndef TargetDir
  331. #define TargetDir LocalDir
  332. #endif                    /* TargetDir */
  333.  
  334.  
  335. #ifndef Pipes
  336. #if ARM || OS2 || UNIX || VMS
  337. #define Pipes
  338. #endif                    /* ARM || OS2 || UNIX || VMS */
  339. #endif                    /* Pipes */
  340.  
  341. #if UNIX || VMS
  342. #define SystemFnc
  343. #endif                    /* UNIX || VMS */
  344.  
  345.  
  346. /*
  347.  * Default sizing and such.
  348.  */
  349.  
  350. #define WordSize sizeof(word)
  351.  
  352. #ifndef ByteBits
  353. #define ByteBits 8
  354. #endif                    /* ByteBits */
  355.  
  356. /*
  357.  * Define the size of the units in MemMon (allocation history) files.
  358.  */
  359. #ifdef MemMon
  360. #ifndef MMUnits
  361. #define MMUnits WordSize
  362. #endif                    /* MMUnits */
  363. #endif                    /* MemMon */
  364.  
  365. #ifdef EventMon
  366. #undef MMUnits
  367. #define MMUnits 1
  368. #endif                    /* EventMon */
  369.  
  370. /*
  371.  * Change the name of gcvt() if we're supplying our own version,
  372.  * to avoid complaints under VMS and others with shared libraries.
  373.  */
  374.  
  375. #ifndef NoIconGcvt
  376. #undef IconGcvt
  377. #define IconGcvt
  378. #define gcvt icon_gcvt
  379. #endif                    /* IconGcvt */
  380.  
  381. /*
  382.  *  The following definitions depend on whether or not the ANSI C standard
  383.  *  is supported.
  384.  */
  385.  
  386. #ifdef Standard
  387. #undef StandardC
  388. #undef StandardPP
  389. #undef StandardLib
  390. #define StandardC
  391. #define StandardPP
  392. #define StandardLib
  393. #endif                    /* Standard */
  394.  
  395. #ifdef StandardPP
  396. #define Cat(x,y) x##y
  397. #define Lit(x) #x
  398. #else                    /* StandardPP */
  399. #define Ident(x) x
  400. #define Cat(x,y) Ident(x)y
  401. #define Lit(x) "x"
  402. #endif                    /* StandardPP */
  403.  
  404. #ifdef StandardC
  405. #undef Prototypes
  406. #define Prototypes
  407. #undef VoidType
  408. #define VoidType
  409. #define Bell '\a'
  410. #else                    /* StandardC */
  411. #if EBCDIC
  412. #define Bell '\x2F'
  413. #else                    /* EBCDIC */
  414. #define Bell '\007'
  415. #endif                    /* EBCDIC */
  416. #endif                    /* StandardC */
  417.  
  418. #ifdef StandardLib
  419. #undef SysMem
  420. #define SysMem
  421. #endif                    /* StandardLib */
  422.  
  423. #if IntBits != WordBits
  424. #undef SysMem
  425. #endif                    /* Intbits != WordBits */
  426.  
  427. #ifdef SysMem
  428. #undef memcopy
  429. #undef memfill
  430. #define memcopy(to,from,len) memcpy(to,from,len)
  431. #define memfill(to,from,len) memset(to,from,len)
  432. #endif                    /* SysMem */
  433.  
  434. /*
  435.  * Provide definition to use void if it's supported (mainly avoids error
  436.  *  messages with some C compilers.  Note: typedef does not work, so care
  437.  *  is needed not to use compound declarations.
  438.  */
  439.  
  440. #ifdef VoidType
  441. #define novalue void
  442. #define noargs void
  443. #else                    /* VoidType */
  444. #define novalue int
  445. #define noargs
  446. #endif                    /* VoidType */
  447.  
  448. /*
  449.  * Customize output if not pre-defined.
  450.  */
  451.  
  452. #ifndef TraceOut
  453. #define TraceOut(s) fprintf(stderr,s)
  454. #endif                    /* TraceOut */
  455.  
  456. #if EBCDIC
  457. #define BackSlash "\xe0"
  458. #else                    /* EBCDIC */
  459. #define BackSlash "\\"
  460. #endif                    /* EBCDIC */
  461.  
  462. #ifndef WriteBinary
  463. #define WriteBinary "wb"
  464. #endif                    /* WriteBinary */
  465.  
  466. #ifndef ReadBinary
  467. #define ReadBinary "rb"
  468. #endif                    /* ReadBinary */
  469.  
  470. #ifndef WriteText
  471. #define WriteText "w"
  472. #endif                    /* WriteText */
  473.  
  474. #ifndef ReadText
  475. #define ReadText "r"
  476. #endif                    /* ReadText */
  477.  
  478. /*
  479.  * "hidden" is used to declare static functions;  "hidden" normally == "static",
  480.  *  except with compilers that can't handle "static" in prototypes.
  481.  */
  482.  
  483. #ifndef hidden
  484. #define hidden static
  485. #endif                    /* hidden */
  486.  
  487. /*
  488.  * The "Params" macro allows a single declaration to be used with both old- and
  489.  *  new-style compilers.
  490.  */
  491.  
  492. #ifdef Prototypes
  493. #define Params(a) a
  494. #else                    /* Prototypes */
  495. #define Params(a) ()
  496. #endif                    /* Prototypes */
  497.  
  498. /*
  499.  * The following code is operating-system dependent [@config.01].
  500.  *  Any configuration stuff that has to be done at this point.
  501.  */
  502.  
  503. #if PORT
  504.    /* Probably nothing is needed. */
  505. Deliberate Syntax Error
  506. #endif                    /* PORT */
  507.  
  508. #if VMS
  509. #define ExecSuffix ".exe"
  510. #define ObjSuffix ".obj"
  511. #define LibSuffix ".olb"
  512. #endif                    /* VMS */
  513.  
  514. #if AMIGA || ARM || ATARI_ST || MACINTOSH || MVS || VM
  515. #endif                    /* AMIGA || ARM || ... */
  516.  
  517. #if MSDOS || OS2
  518.  
  519. /*
  520.  *  Define compiler-specific symbols to be zero if not already
  521.  *  defined.
  522.  */
  523.  
  524. #ifndef LATTICE
  525. #define LATTICE 0
  526. #endif                    /* LATTICE */
  527.  
  528. #ifndef MICROSOFT
  529. #define MICROSOFT 0
  530. #endif                    /* MICROSOFT */
  531.  
  532. #ifndef MWC
  533. #define MWC 0
  534. #endif                    /* MWC */
  535.  
  536. #ifndef TURBO
  537. #define TURBO 0
  538. #endif                    /* TURBO */
  539.  
  540. #ifndef HIGHC_386
  541. #define HIGHC_386 0
  542. #endif                    /* HIGHC_386 */
  543.  
  544. #ifndef INTEL_386
  545. #define INTEL_386 0
  546. #endif                    /* INTEL_386 */
  547.  
  548. #ifndef ZTC_386
  549. #define ZTC_386 0
  550. #endif                    /* ZTC_386 */
  551.  
  552. #if HIGHC_386
  553. /*
  554.  * MetaWare's HighC 386 macro putc doesn't handle putc('\n') correctly -
  555.  * sometimes a CR is not written out before the LF.  So, redefine
  556.  * macro putc to actually issue an fputc.
  557.  */
  558. #undef putc
  559. #define putc(c,f) fputc(c,f)
  560. #endif                    /* HIGHC_386 */
  561. #endif                    /* MSDOS */
  562.  
  563.  
  564. #if MACINTOSH
  565. #if LSC
  566. /*
  567.  * LightSpeed C requires that #define tokens appear after prototypes
  568.  */
  569. #define index strchr
  570. #define malloc mlalloc
  571. #define rindex strrchr
  572. #define unlink remove
  573. #endif                    /* LSC */
  574. #endif                    /* MACINTOSH */
  575.  
  576. #if UNIX || (MACINTOSH && MPW)
  577.  
  578. #undef WriteBinary
  579. #define WriteBinary "w"
  580.  
  581. #undef ReadBinary
  582. #define ReadBinary "r"
  583.  
  584. #ifndef NoHardWiredPaths
  585. #define HardWiredPaths
  586. #endif                    /* NoHardWiredPaths */
  587.  
  588. #ifndef NoHeader
  589. #undef Header
  590. #define Header
  591. #endif                    /* NoHeader */
  592.  
  593. #endif                    /* UNIX || (MACINTOSH && MPW) */
  594.  
  595. /*
  596.  * End of operating-system specific code.
  597.  */
  598.  
  599.  
  600. #ifndef DiffPtrs
  601. #define DiffPtrs(p1,p2) (word)((p1)-(p2))
  602. #endif                    /* Diffptrs */
  603.  
  604. #ifndef AllocReg
  605. #define AllocReg(n) malloc((msize)n)
  606. #endif                    /* AllocReg */
  607.  
  608. #define MaxFileName 256
  609.  
  610. #ifndef EVENTMON
  611. #define EVENTMON "EVENTMON"
  612. #endif                    /* EVENTMON */
  613.  
  614. #ifndef MEMMON
  615. #define MEMMON "MEMMON"
  616. #endif                    /* MEMMON */
  617.  
  618. #ifndef RttSuffix
  619. #define RttSuffix ".r"
  620. #endif                    /* RttSuffix */
  621.  
  622. #ifndef DBSuffix
  623. #define DBSuffix ".db"
  624.  
  625.  
  626. #ifndef PPInit
  627. #define PPInit ""
  628. #endif                    /* PPInit */
  629.  
  630. #ifndef PPDirectives
  631. #define PPDirectives {"passthru", PpKeep},
  632. #endif                    /* PPDirectives */
  633.  
  634. #ifndef NoRanlib
  635. #define Ranlib
  636. #endif                    /* NoRanlib */
  637.  
  638. #define NewStruct(type)\
  639.    (struct type *)alloc((unsigned int) sizeof (struct type))
  640.  
  641. #define AppChar(sbuf, c) {\
  642.    if ((sbuf).endimage >= (sbuf).end)\
  643.       new_sbuf(&(sbuf));\
  644.    *((sbuf).endimage)++ = (c); }
  645.  
  646. #ifndef ExecSuffix
  647. #define ExecSuffix ""
  648. #endif                    /* ExecSuffix */
  649.  
  650. #ifndef CSuffix
  651. #define CSuffix ".c"
  652. #endif                    /* CSuffix */
  653.  
  654. #ifndef HSuffix
  655. #define HSuffix ".h"
  656. #endif                    /* HSuffix */
  657. #endif                    /* DBSuffix */
  658.  
  659. #ifndef ObjSuffix
  660. #define ObjSuffix ".o"
  661. #endif                    /* ObjSuffix */
  662.  
  663. #ifndef LibSuffix
  664. #define LibSuffix ".a"
  665. #endif                    /* LibSuffix */
  666.  
  667. #ifndef CComp
  668. #define CComp "cc"
  669. #endif                    /* CComp */
  670.  
  671. #ifndef COpts
  672. #define COpts "" 
  673. #endif                    /* COpts */
  674.  
  675. /*
  676.  * Note, size of the hash table is a power of 2:
  677.  */
  678. #define IHSize 128
  679. #define IHasher(x)    (((word)x)&(IHSize-1))    
  680.  
  681.  
  682. #if COMPILER
  683.  
  684. /*
  685.  * Code for the compiler.
  686.  */
  687.  
  688. #undef MultiThread        /* no way -- interpreter only */
  689. #undef EventMon            /* presently not supported in the compiler */
  690. #undef EventProc        /* presently not supported in the compiler */
  691. #undef ExecImages               /* interpreter only */
  692.  
  693. #else                    /* COMPILER */
  694.  
  695. /*
  696.  * Code for the interpreter.
  697.  */
  698.  
  699. #ifndef IcodeSuffix
  700. #define IcodeSuffix ""
  701. #endif                    /* IcodeSuffix */
  702.  
  703. #ifndef IcodeASuffix
  704. #define IcodeASuffix ""
  705. #endif                    /* IcodeASuffix */
  706.  
  707. #ifndef U1Suffix
  708. #define U1Suffix ".u1"
  709. #endif                    /* U1Suffix */
  710.  
  711. #ifndef U2Suffix
  712. #define U2Suffix ".u2"
  713. #endif                    /* U2Suffix */
  714.  
  715. #ifndef USuffix
  716. #define USuffix ".u"
  717. #endif                    /* USuffix */
  718.  
  719. #endif                    /* COMPILER */
  720.  
  721. #ifndef Options
  722. #if ARM || UNIX
  723. #define Options "C:LS:Tce:f:mn:o:p:r:stuv:x"
  724. #else                    /* ARM || UNIX */
  725. #define Options "C:LS:Tce:f:n:o:p:r:stuv:x"
  726. #endif                    /* ARM || UNIX */
  727. #endif                    /* Options */
  728.  
  729. #ifndef CUsage
  730. #if UNIX
  731. #define CUsage "[-C C-comp] [-T] [-c] [-f{adelns}] [-m] [-n{acest}]\n\
  732.  [-o ofile] [-p C-opts] [-r runtime] [-s] [-t] [-u] [-v i]"
  733. #else                    /* UNIX */
  734. #define CUsage "[-C C-comp] [-T] [-c] [-f{adelns}] [-n{acest}]\n\
  735.  [-o ofile] [-p C-opts] [-r runtime] [-s] [-t] [-u] [-v i]"
  736. #endif                    /* UNIX */
  737. #endif                    /* CUsage */
  738.  
  739. #ifndef TUsage
  740. #if ARM || UNIX
  741. #define TUsage "[-cmstu] [-e efile] [-o ofile] [-Sxnnnn]"
  742. #else                    /* ARM || UNIX */
  743. #if MVS || VM
  744. #define TUsage "<-cstu> <-e efile> <-o ofile> <-Sxnnnn>"
  745. #else                    /* MVS || VM */
  746. #define TUsage "[-cstu] [-e efile] [-o ofile] [-Sxnnnn]"
  747. #endif                    /* MVS || VM */
  748. #endif                    /* ARM || UNIX */
  749. #endif                    /* TUsage */
  750.  
  751. /*
  752.  * TEMPORARY
  753.  */
  754.  
  755. /*
  756.  *  Vsizeof is for use with variable-sized (i.e., indefinite)
  757.  *   structures containing an array of descriptors declared of size 1
  758.  *   to avoid compiler warnings associated with 0-sized arrays.
  759.  */
  760.  
  761. #define Vsizeof(s)    (sizeof(s) - sizeof(struct descrip))
  762.  
  763. /*
  764.  * Other sizeof macros:
  765.  *
  766.  *  Wsizeof(x)    -- Size of x in words.
  767.  *  Vwsizeof(x) -- Size of x in words, minus the size of a descriptor.    Used
  768.  *   when structures have a potentially null list of descriptors
  769.  *   at their end.
  770.  */
  771. #define Wsizeof(x)    ((sizeof(x) + sizeof(word) - 1) / sizeof(word))
  772. #define Vwsizeof(x)    ((sizeof(x) - sizeof(struct descrip) +\
  773.                sizeof(word) - 1) / sizeof(word))
  774.